<?php
/**
 * 常规数据控制器
 */

declare (strict_types = 1);

namespace app\controller\user;

use app\BaseController;
use think\facade\Db;
use think\facade\Request;

class Basic extends BaseController
{
    /**
     * 查看常规数据列表
     */
    public function list()
    {
        try {
            $param = Request::param();
            $where = [];
            
            // 按类型筛选
            if (!empty($param['type'])) {
                $where[] = ['type', '=', $param['type']];
            }
            
            $list = Db::name('basic_user')
                ->where($where)
                ->where('status', '>=', 0)
                ->order('sort', 'asc')
                ->select();
            
            return json([
                'code' => 0,
                'msg' => 'success',
                'data' => $list
            ]);
        } catch (\Exception $e) {
            return json(['code' => 500, 'msg' => '获取失败: ' . $e->getMessage()]);
        }
    }
    
    /**
     * 查看单个常规数据信息
     */
    public function view()
    {
        $param = Request::param();
        
        if (empty($param['id'])) {
            return json(['code' => 400, 'msg' => '参数错误']);
        }
        
        try {
            $data = Db::name('basic_user')
                ->where('id', $param['id'])
                ->find();
            
            if (empty($data)) {
                return json(['code' => 404, 'msg' => '数据不存在']);
            }
            
            return json([
                'code' => 0,
                'msg' => 'success',
                'data' => $data
            ]);
        } catch (\Exception $e) {
            return json(['code' => 500, 'msg' => '获取失败: ' . $e->getMessage()]);
        }
    }
    
    /**
     * 设置常规数据（获取数据列表）
     */
    public function set()
    {
        try {
            $list = Db::name('basic_user')
                ->where('status', 1)
                ->order('sort', 'asc')
                ->select();
            
            return json([
                'code' => 0,
                'msg' => 'success',
                'data' => $list
            ]);
        } catch (\Exception $e) {
            return json(['code' => 500, 'msg' => '获取失败: ' . $e->getMessage()]);
        }
    }
    
    /**
     * 新建常规数据
     */
    public function add()
    {
        $param = Request::param();
        
        // 数据验证
        if (empty($param['title'])) {
            return json(['code' => 400, 'msg' => '数据名称不能为空']);
        }
        
        if (empty($param['type'])) {
            return json(['code' => 400, 'msg' => '数据类型不能为空']);
        }
        
        $data = [
            'title' => $param['title'],
            'type' => $param['type'],
            'sort' => $param['sort'] ?? 0,
            'status' => $param['status'] ?? 1,
            'create_time' => time(),
            'update_time' => time()
        ];
        
        try {
            $basicId = Db::name('basic_user')->insertGetId($data);
            
            return json(['code' => 0, 'msg' => '添加成功', 'data' => ['id' => $basicId]]);
        } catch (\Exception $e) {
            return json(['code' => 500, 'msg' => '添加失败: ' . $e->getMessage()]);
        }
    }
    
    /**
     * 编辑常规数据
     */
    public function edit()
    {
        $param = Request::param();
        
        // 数据验证
        if (empty($param['id'])) {
            return json(['code' => 400, 'msg' => '参数错误']);
        }
        
        if (empty($param['title'])) {
            return json(['code' => 400, 'msg' => '数据名称不能为空']);
        }
        
        if (empty($param['type'])) {
            return json(['code' => 400, 'msg' => '数据类型不能为空']);
        }
        
        $data = [
            'id' => $param['id'],
            'title' => $param['title'],
            'type' => $param['type'],
            'sort' => $param['sort'] ?? 0,
            'status' => $param['status'] ?? 1,
            'update_time' => time()
        ];
        
        try {
            Db::name('basic_user')->update($data);
            
            return json(['code' => 0, 'msg' => '编辑成功']);
        } catch (\Exception $e) {
            return json(['code' => 500, 'msg' => '编辑失败: ' . $e->getMessage()]);
        }
    }
    
    /**
     * 删除常规数据
     */
    public function del()
    {
        $param = Request::param();
        
        if (empty($param['id'])) {
            return json(['code' => 400, 'msg' => '参数错误']);
        }
        
        try {
            Db::name('basic_user')
                ->where('id', $param['id'])
                ->update([
                    'status' => -1,
                    'update_time' => time()
                ]);
            
            return json(['code' => 0, 'msg' => '删除成功']);
        } catch (\Exception $e) {
            return json(['code' => 500, 'msg' => '删除失败: ' . $e->getMessage()]);
        }
    }
}